package com.ys.web.service;

import java.util.List;

import com.ys.web.entity.Account;
import com.ys.web.pojo.AccountInfo;
import com.ys.web.remotemodel.RemoteAccountInfo;

/**
 * 账户服务
 * @author goldfish
 *
 */
public interface AccountService {
	
	
	/**
	 * 账户信息添加
	 * @param accountInfo
	 * @return
	 */
	public Integer addAccount(AccountInfo accountInfo) throws Exception;
	
	
	/**
	 * 保存或更新账户信息
	 * @param accountInfo
	 * @return
	 */
	public void saveAccount(AccountInfo accountInfo) throws Exception;
	
	
	/**
	 * 根据公司id获取账户信息
	 * @param companyId
	 * @return
	**/
	public List<AccountInfo> getAccountByCompanyId(Integer companyId) throws Exception;	
	
	
	/**
	 * 根据公司id获取账户信息
	 * @param companyId
	 * @return
	 */
	public List<RemoteAccountInfo> getAccountByCompanyKADId(Integer companyId) throws Exception;

	
	
	/**
	 * 获取单个账户信息
	 * @param id
	 * @return
	 */
	public AccountInfo getAccountById(Integer id);
	
	
	/**
	 * 删除单个账户信息
	 * @param account
	 */
	public void deleteAccount(Integer id);
	
	/**
	 * 根据账户名称获取账户实体
	 * @param accountName
	 * @return
	 */
	public Account getAccountByAccountName(String accountName);
	
		
	/**
	 * 用户名是否存在
	 * @param accountName
	 * @return
	 */
	public Boolean isAccountExist(String accountName);
	
	/**
	 * 其他用户是否使用这个账户
	 * @param accountName
	 * @return
	 */
	public Boolean isOtherUserHasThisAccount(AccountInfo accountInfo);
	
	
	/**
	 * 平台账户是否存在
	 * @param accountName
	 * @return
	 */
	public Boolean isAccountExist(AccountInfo accountInfo);
	
	/**
	 * 是否存在相同的平台账户名
	 * @param accountInfo
	 * @return
	 */
	public Boolean isHasSameAccount(AccountInfo accountInfo);
	
	/**
	 * 删除账户
	 * @param account
	 */
	public void deleteAccount(Account account);
	
	/**
	 * 更新账号、CPC信息
	 * @param remoteAccountInfo
	 */
	public void updateRemoteAccountInfo(RemoteAccountInfo remoteAccountInfo);
	
}
